﻿//using CPPEI.Coolzon.Common;
//using CPPEI.Coolzon.UI.Data;
//using CPPEI.Coolzon.UI.Views;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;

//namespace CPPEI.Coolzon.UI
//{
//    /// <summary>
//    /// 本地事件代理类
//    /// </summary>
//    public partial class LocalEventProxy : EventProxy
//    {
//        private static LocalEventProxy s_instance;

//        public static LocalEventProxy Instance
//        {
//            get
//            {
//                if (s_instance == null)
//                {
//                    s_instance = new LocalEventProxy();
//                }
//                return s_instance;
//            }
//        }

//        private LocalEventProxy()
//        {
//        }

//        #region Open Scene Event

//        [Subscribe]
//        public void OnOpen(UI.Event.OpenSceneEvent @event)
//        {
//            // 将事件转交给渲染视图
//            RenderView.OnSwitch(@event.SwitchMode, @event.FrameName, "SCENE", @event.SceneName, @event.Args);
//        }

//        #endregion


//        #region Close Scene Event

//        [Subscribe]
//        public void OnHide(UI.Event.CloseSceneEvent @event)
//        {
//            // 将事件转交给渲染视图
//            RenderView.OnBack(@event.SwitchMode, @event.FrameName, "SCENE", @event.SceneName);
//        }

//        #endregion

//        #region Part Action Event
//        [Subscribe]
//        public void OnPartEvent(EventContext context)
//        {
//            UI.Data.OpenSceneArgs args = new UI.Data.OpenSceneArgs();
//            foreach (string key in context.Arguments.Keys)
//            {
//                args.ParametersString.Add(key, context.Arguments[key]);
//            }

//            // 获取场景定义
//            Metadata.Scene scene = Metadata.SolutionUtil.GetScene(RenderView.Solution, context.TargetSceneName);
//            if (context.ActionType == "REPLACE")
//            {
//                Common.EventBus.Instance.Publish(new Event.OpenSceneEvent(SwitchMode.Replace, context.TargetFrameName, context.TargetSceneName, args));
//            }
//            else if (context.ActionType == "POP")
//            {
//                // 弹出视图
//                Common.EventBus.Instance.Publish(new Event.OpenSceneEvent(SwitchMode.Pop, context.TargetFrameName, context.TargetSceneName, args));
//            }
//        }
//        #endregion

//        public void OnScrollToArea(string frameName, Metadata.Solution solution, Metadata.Scene scene, Metadata.Area area)
//        {
//            //throw new NotImplementedException();
//        }

//        #region ShowQueryPanel event

//        [Subscribe]
//        public void OnShowQueryPanel(CPPEI.Coolzon.UI.Event.ShowQueryPanelEvent @event)
//        {
//            // 控件组件
//            QueryView queryView = new QueryView(((Metadata.NodeBase)@event.PartMetadata).Parameters);
//            queryView.Tag = @event.PartInstance;
//            queryView.Close += queryView_Close;
//            UIContext.Current.RootViewContainer.PopView((@event.PartInstance as ScenePart).Caption, queryView);
//        }

//        void queryView_Close(View view, bool isCancel)
//        {
//            QueryView queryView = view as QueryView;
//            UI.Part partInstance = view.Tag as UI.Part;

//            List<Metadata.Parameter> returnParameters = queryView.Results;
//            if (returnParameters == null)
//            {
//                return;
//            }

//            if (partInstance is Part)
//            {
//                // 控件组件
//                for (int index = 0; index < queryView.Results.Count; index++)
//                {
//                    partInstance.Parameters.Set(queryView.Results[index]);
//                }
//            }
//        }

//        #endregion

//    }
//}
